Processes typically communicate through internode or intranode messages. There are many different types of standards that have been formed to attempt to simplify the communication of messages between processes. One such standard is the message passing interface (called “MPI”). MPI: A Message-Passing Interface Standard, Message Passing Interface Forum, May 5, 1994; and MPI-2: Extension to the Message-Passing Interface, Message Passing Interface Forum, Jul. 18, 1997. MPI is essentially a standard library of routines that may be called from programming languages, such as FORTRAN and C. MPI is portable and typically fast due to optimization of the platform on which it is run.
Even though the MPI standards strictly define the Application Programming Interface (API) of all MPI functions, every MPI library ships with its own Application Binary Interface (ABI). Due to this, applications linked against a particular MPI implementation generally cannot run on top of another MPI implementation. Accordingly, extensive steps are needed to transition an application from one MPI implementation to another, including re-compilation and re-linking.